1
L'indagine sulle prestazioni
DSAI2202Lab 8: Composing Data Operations

Il team di supporto didattico ha bisogno di un elenco di iscrizioni attive il cui rendimento recente è peggiorato. Confronta ciascuno studente con il proprio rendimento precedente nello stesso corso.

Concordare le regole

  1. Usa due periodi: earlier e recent. Ognuno ha due valutazioni di uguale peso.
  2. Richiedi almeno due punteggi non NULL in ciascun periodo prima di confrontare le medie.
  3. Calcola decline_points = earlier_avg - recent_avg.
  4. Un calo di almeno 15 punti significa Review. Altrimenti un'iscrizione idonea ha Nessun avviso.
  5. Mantieni Dati insufficienti separati. Uno zero è un punteggio valido; un NULL o un record mancante non è uno zero.

Prepara il tuo database

Apri il file fornito lab8_setup.sql dalla cartella del TA DSAI2202/lab8/ in pgAdmin ed esegui il file completo. Usa di nuovo l'impostazione di connessione a destra ogni volta che apri una nuova connessione.

Il setup fornisce anche performance_comparison, una query salvata chiamata view. Servirà per gli esercizi successivi; non è una tabella aggiuntiva di risultati di valutazione memorizzati.

✍️ Ispeziona prima di calcolare
Ispeziona E01, E07, E08, E09 ed E24. Stabilisci quali hanno abbastanza punteggi in entrambi i periodi. Spiega perché gli zeri di E24 forniscono prove più solide dei valori NULL di E08.
Imposta schema
SET search_path TO lab8;
Verifica conteggi
SET search_path TO lab8;

SELECT 'students' AS table_name, COUNT(*) AS row_count
FROM students
UNION ALL SELECT 'courses', COUNT(*) FROM courses
UNION ALL SELECT 'enrolments', COUNT(*) FROM enrolments
UNION ALL SELECT 'assessment_results', COUNT(*) FROM assessment_results
UNION ALL SELECT 'support_units', COUNT(*) FROM support_units
ORDER BY table_name;
Ispeziona le prove
SET search_path TO lab8;

SELECT e.enrolment_id, e.student_id, e.course_code,
       r.result_id, r.period, r.assessment_no, r.score
FROM enrolments AS e
JOIN assessment_results AS r
  ON r.enrolment_id = e.enrolment_id
WHERE e.enrolment_id IN ('E01', 'E07', 'E08', 'E09', 'E24')
ORDER BY e.enrolment_id, r.period, r.assessment_no;